#include<bits/stdc++.h>
using namespace std;
int n,m,b[1010],now,cnt,ans,num,f[50010][1010],mp[1010][30];
string s,t;
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	freopen("neck.in","r",stdin);
	freopen("neck.out","w",stdout);
	cin>>s>>t,m=t.size(),n=s.size(),t=' '+t,s=' '+s;
	for(int i=2;i<=m;i++){
		while(now>0&&t[i]!=t[now+1])now=b[now];
		if(t[i]==t[now+1])now++;
		b[i]=now;
	}
//	for(int i=1;i<=m;i++)cout<<b[i]<<" ";
//	cout<<"\n";
	for(int i=1;i<=m;i++){
		mp[i-1][t[i]-'a']=i;
		for(int j=0;j<26;j++){
			if(t[i]-'a'!=j)mp[i-1][j]=mp[b[i-1]][j];
		}
	}
//	for(int i=0;i<m;i++){
//		for(int j=0;j<26;j++)cout<<mp[i][j]<<" ";
//		cout<<"\n";
//	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<m;j++){
			f[i+1][j]=max(f[i+1][j],f[i][j]);
			f[i+1][mp[j][s[i]-'a']]=max(f[i+1][mp[j][s[i]-'a']],f[i][j]+1);
		}
	}
	for(int i=0;i<m;i++){
//		cout<<f[n+1][i]<<"\n"; 
		ans=max(ans,f[n+1][i]);
	}
	cout<<ans;
	return 0;
}
/*
nezhaheaobing
aobing

*/
